// std::true_type 详解
// std::true_type 是一个类型，具体来说是 std::integral_constant<bool, true> 的别名。
// 它有以下特点：
// 1.类型与值的结合：它既是一个类型，又包含一个静态常量值 value（等于 true）
// 2.类型信息：作为一个类型，它可以在模板元编程中用于类型推导和选择
// 3.值访问：可以通过 ::value 静态成员访问其布尔值 true
// 4.隐式转换：可以隐式转换为 bool 类型，值为 true

// std::true_type{} 的含义
// std::true_type{} 是创建一个 std::true_type 类型的临时对象。这个对象：
// 等价于
std::integral_constant<bool, true> temp;
template <class T, T v>
struct integral_constant
{
    static constexpr T value = v;
    using value_type = T;
    using type = integral_constant;
    constexpr operator value_type() const noexcept { return value; }
    constexpr value_type operator()() const noexcept { return value; }
};
// 在 decltype(std::declval<C>().size(), std::true_type{}) 这个表达式中：
// 如果 C 类型有 size() 方法，整个表达式的类型是 std::true_type
// 如果 C 类型没有 size() 方法，表达式替换失败（SFINAE）
